|Poster:||Youssef Eldakar||Date:||May 24, 2004 11:19pm|
|Forum:||petabox||Subject:||Bootstrapping from USB|
|Poster:||billmoyer||Date:||May 28, 2004 9:11am|
|Forum:||petabox||Subject:||Re: Bootstrapping from USB|
There are two ways this can be done: (1) a BOOTP server can be listening on the LAN, so that nodes can PXE boot over the network, or (2) a bootable USB storage device ([USB-HDD] in BIOS) can be plugged into a USB slot. The motherboard BIOS will look for a bootable USB device first, then try to PXE boot, and then try to boot off the first hard drive.
PXE boot would be the most convenient, but we did not want sysadmins to have to depend entirely on PXE. A simpler, more reliable alternative was sought in USB boot. Most sysadmins are familiar with the "rescue floppy" and with installing an OS from a cdrom drive, and replacing the floppy or cdrom with a USB device is a short conceptual leap.
The process of installing the OS via USB-boot is simple: the USB device is inserted, and the node is powered on. FeatherLinux boots on the USB device, at which point the sysadmin can either log into the node remotely via ssh, or plug a console into the machine directly. The sysadmin then runs the script "NODE.systemimager", which installs the Debian OS onto the node's hard drive over the network from homeserver node, using rsync. The USB device is removed, and the node rebooted, at which point it "local-boots" from its hard drive, running all of the standard PetaBox software and services.
To "rescue" a misbehaving node, the process is similar. Once FeatherLinux boots up from the USB device, the sysadmin can mount /dev/hda1 and poke around with a variety of standard UNIX tools.
Sysadmins who want to deal with the additional complexity may opt to eschew with USB-boot entirely, and set up a BOOTP server.
The USB dongles we are using now are Kingston 256MB Flash devices, but a USB cdrom or USB hard drive would work just as well. FeatherLinux and various ancillary utilities occupy about 80MB in total. There are plans to reduce this to under 32MB.